﻿using System.ComponentModel.DataAnnotations;
using Fadada.FASC.SDK.DotNetCore.Attributes;
using Newtonsoft.Json;

namespace Fadada.FASC.SDK.DotNetCore.Model
{
    [RemoteService("/file/upload-instant", "POST")]
    public class FileUploadInstant
    {
        /// <summary>
        /// 文件归属方，指定该文件属于谁。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "ownerId", Required = Required.Always)]
        public OpenId OwnerId { get; set; }

        /// <summary>
        /// 文件的用途类型：
        /// doc：用于签署的文档，只有这种用途的文件才可以被加入签署任务的文档列表中
        /// attach：用于签署文档的附件，只有这种用途的文件才可以被加入签署任务的附件列表中
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "fileType", Required = Required.Always)]
        public string FileType { get; set; }

        /// <summary>
        /// 文档名称，长度最大100个字符。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "fileName", Required = Required.Always)]
        [MaxLength(100)]
        public string FileName { get; set; }

        /// <summary>
        /// 文件源URL地址，法大大平台将从该地址拉取文档，文档大小暂定不能超过50M。如fileContent为空，此处必填。长度最大为500个字符。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "fileUrl", Required = Required.AllowNull)]
        [MaxLength(500)]
        public string FileUrl { get; set; }

        /// <summary>
        /// 可在此设置上传文件的hash值(sha256)， 输出hexString；如有传入该参数，上传后会校验文件hash值是否匹配：如匹配则上传成功，如不匹配则上传失败。
        /// 请注意：计算文件hash会消耗法大大平台系统资源和增加一定的响应时间。如果您期望更好快的响应时间和用户体验，请不要传该参数。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "fileContentHash", Required = Required.AllowNull)]
        public string FileContentHash { get; set; }
    }
}